/*
 * 1.0 = 1m 
 *  => 0.01 = 1cm; 1000.0 = 1km
*/

#ifndef _TRANSFORM_H
#define _TRANSFORM_H

#include <mesh/mesh.h>
#include <app/ameTypes.h>
#include <render/enviroment/camera.h>

#include <glm/glm.hpp>

class Transform {
public:
    Transform ( glm::vec3 position, glm::vec3 rotation, glm::vec3 scale );
    Transform ();
        
    void setX ( double x );
    void setY ( double y );
    void setZ ( double z );

    void setPosition ( glm::vec3 );
    void translate( glm::vec3 direction );

    void setRotation ( glm::vec3 );
    void rotate ( glm::vec3 );
    
    void setScale ( glm::vec3 );
    
    glm::vec3 getLocation ();
    glm::vec3 getRotation ();
    glm::vec3 getScale ();
    
    glm::mat4 getModel ();
    glm::mat4 GetMatrixViewProjection ( Camera &camera );
    
private:
    
    glm::vec3 position;
    glm::vec3 rotation;
    glm::vec3 scale;
};

#endif // _TRANSFORM_H
